home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / aminet / util / misc / set040_233.lha / set040.doc < prev    next >
Text File  |  1993-04-24  |  42KB  |  979 lines

  1.  
  2. PROGRAM  
  3.         Set040  (2nd Release)
  4.                 
  5.         The command syntax of this new release of Set040 
  6.         is not compatible with the older V1.xx releases of 
  7.         Set040.  Please read this entire document file so you 
  8.         can become familiar with the new syntax.
  9. SOURCE  
  10.     Written in Assembly Language using Macro68 V3.170
  11.  
  12. AUTHOR        
  13.     Nic Wilson
  14.     Nic Wilson Software
  15.     P.O. Box 1164
  16.     TOOWOOMBA QUEENSLAND 4350
  17.     Australia
  18.                 
  19.     EMAIL  cbmaus!cbmozq!wilson!nicw@cbmvax.commodore.com
  20.     CBMNET nicw@wilson.adsp.sub.org
  21.     TELEPHONE +61 76 358539 After Hours Australian Time
  22.             
  23. DISTRIBUTION    
  24.     
  25.     This release of Set040 is shareware and freely distributable.  
  26.     
  27.     Electronic distribution is allowed.
  28.     
  29.         DISTRIBUTION
  30.         
  31.         Permission is hereby granted to distribute this program on the
  32.         condition that no profit is gained gained from its distribution.
  33.         All document files must accompany it and remain unchanged.  If the
  34.         document files are crunched, then a suitable de-cruncher must also
  35.         be supplied with them that works on ALL CPU version Amigas.  
  36.         
  37.         It MAY NOT be distributed on those so called 'copyright' non 
  38.         distributable PD disks.  It MAY be distributed on a BBS as long as 
  39.         that BBS does NOT have individual charges for downloading of files.  
  40.         
  41.         Please send any bug reports or ideas to the address at the top of 
  42.         this file. 
  43.  
  44.         Commercial companies may also distribute the program without 
  45.         permission, but I would appreciate being notified so I can
  46.         inform you of updates.
  47.  
  48.     * * * DONATIONS * * *
  49.         ---------------------
  50.         
  51.         TO DATE THE DISTRIBUTION AND USAGE HAS BEEN LARGE, BASED ON THE 
  52.         AMOUNT OF EMAIL AND UPGRADE ENQUIRIES I HAVE RECEIVED,  AND YET I 
  53.         HAVE NOT RECEIVED EVEN ONE CONTRIBUTION.  COME ON GUYS, I SPENT 12 
  54.         MONTHS WRITING THIS PROGRAM AND I AM STILL UPDATING AND ENHANCING 
  55.         IT.
  56.         
  57.         A dontation of $25.00 American or equivalent is suggested, OR if
  58.         you cannot afford that, any amount will be gratefully accepted.
  59.         
  60.         Overseas users, please DO NOT send personal or EuroChecks.  They
  61.         are very difficult and expensive to cash.  Please send an overseas
  62.         bank draft in Australian Dollars drawn on any Australian bank.  Your
  63.         local bank should be able to help you with this.
  64.         
  65.         Any cash currency is acceptable as it is very easy to convert to
  66.         Australian.
  67.         
  68.         The following credit cards are accepted.
  69.         
  70.         OVERSEAS  -> MASTERCARD, VISA.
  71.         
  72.         AUSTRALIA -> BANKCARD, MASTERCARD, VISA.
  73.         
  74.         These cards can be accepted by mail, email or phone.  Confidentiality
  75.         is guaranteed.  If using credit card, please include the card number,
  76.         the expiry date and the name as it appears on the card. 
  77.         
  78.         Donations in the form of software or hardware is also acceptable.  I
  79.         write many reviews here in Australia and quite often give free plugs
  80.         to companies that have been generous enough to donate to my work.
  81.     
  82. COPYRIGHT    
  83.     This program, and its source code & document files are 
  84.     Copyright (C) Nic Wilson Software 1991-1993.
  85.                 
  86. FUNCTION 
  87.     1. To remap Kickstart V2.04 or greater from ROM into 
  88.        FAST RAM on an Amiga equipped with a 68040 CPU, using 
  89.        the MMU, with options for various functions.
  90.        This remapped kickstart gives a vast improvement in
  91.        the speed the 68040 can access kickstart, and faster than
  92.        any hardware re-mapping of Kickstart.
  93.     2. To remap Kickstart V2.04 or greater on an Amiga equipped
  94.        with an A3640 card such as the A4000 and to survive a 
  95.        reboot without using the MMU.   
  96.     3. FASTROM can be done in a default memory efficient mode,
  97.        or a full map addressing mode.   
  98.     4. To allow the FASTROM remap to be removed and
  99.        all resources reclaimed.
  100.     5. To load and remap, a different Kickstart from disk or file 
  101.        and use the MMU to boot into this Kickstart.  Kickstarts
  102.        1.2, 1.3. 2.04, 3.0 or greater are supported.  An option
  103.        to completely survive a reboot is supported.
  104.     6. To manipulate both the 68040 caches and the various modes.
  105.     7. To display brief or verbose information regarding the
  106.        setting of the MMU remap, and 68040 registers and modes.
  107.     8. To switch between the 68040 and 68030 on any Progressive
  108.        Peripherals & Software 68040 card.   
  109.     9. To sum up, this program gives the user of a 68040 the
  110.        facilities he lost when ROMS were fitted, plus some
  111.        extra ones and with greater flexibility.
  112.        
  113.                                   Page 1    
  114. CONTENTS
  115.  
  116.     Disclaimer.............................................. 2
  117.  
  118.     Acknowledgements........................................ 2
  119.  
  120.     Archive................................................. 2
  121.  
  122.     Requirements............................................ 2
  123.  
  124.     Other info.............................................. 2
  125.  
  126.     Usage................................................... 3
  127.  
  128.     Default................................................. 3
  129.  
  130.     Option availability..................................... 3
  131.     
  132.     A4000 MAPROM............................................ 3
  133.     
  134.     Example of A4000 startup-sequence entry................. 3
  135.  
  136.     Full definitions........................................ 4
  137.     
  138.     FULLMAP OPTION.......................................... 6
  139.     
  140.     Kickstart logical and physical Write-Protection......... 7
  141.  
  142.     Kickstart 1.2 and 1.3................................... 7
  143.  
  144.     Kickstart 2.0x.......................................... 8
  145.  
  146.     KICKROM to FASTROM...................................... 8 
  147.  
  148.     Reset survival.......................................... 8
  149.  
  150.     Program examples........................................ 9
  151.  
  152.     Example of installing FASTROM........................... 9
  153.  
  154.     Example of installing KICKROM........................... 9
  155.  
  156.     Example of converting a KICKROM to FASTROM.............. 9
  157.  
  158.     Example of converting a KICKROM to FASTROM FULLMAP...... 9
  159.  
  160.     Example of installing the reset handler................. 9
  161.  
  162.     Example of startup-sequence entry....................... 10
  163.  
  164.     Example of removing the reset handler................... 10
  165.  
  166.     Example of Cache manipulation........................... 10
  167.  
  168.     Example of removing a FASTROM........................... 10 
  169.  
  170.     Example of switching from 68040 to 68030................ 11
  171.  
  172.     Improvements............................................ 11
  173.  
  174.     Technical notes......................................... 12
  175.  
  176.     The DEFAULT setup....................................... 13
  177.  
  178.     The FULLMAP setup....................................... 14
  179.  
  180.     Trademarks and References............................... 14 
  181.     
  182. DISCLAIMER
  183.     Although I beleive this software performs the functions
  184.     described in this document file, the program is supplied
  185.     "as is" without any warranty on performance of any kind,
  186.     either implied or expressed.  Nic Wilson Software will not
  187.     be liable for any damages, including lost profits, lost 
  188.     savings or other incidental or consequential damages arising 
  189.     from the use or inability to use such software, even if 
  190.     Nic Wilson Software has been advised of the possibility
  191.     of such damages, or for any claim by any other party.       
  192.     This disclaimer supercedes any other document or disclaimer
  193.     on previous versions either written or verbal.
  194.    
  195. ACKNOWLEDGEMENTS
  196.  
  197.     Thank you to Dave Haynie and Michael Sinz for their answers
  198.     to my questions regarding the 68040 over EMAIL.
  199.  
  200.     Thank you to Progressive and Peripherals and Software for 
  201.     their generosity with the A3000/68040 cards.
  202.  
  203.     Thank you to my friend Paul Coward (Digisoft) for a brilliant 
  204.     assembler, Macro68 V3.165.  Set040 assembles with an average
  205.     pass time of 0.41 secs to executable.
  206.  
  207.     Thank you to William J Coldwell for his enhancement suggestions
  208.     and for information on errata documents on the 68040 CPU.
  209.  
  210. REQUIREMENTS
  211.     Depending on the function, the requirements to launch 
  212.     particular functions are different and are as follows:-
  213.                 
  214. FASTROM    AmigaDOS V2.04 or greater, 68040 CPU, 1MB FAST RAM minimum
  215. KICKROM    AmigaDOS V2,04 or greater, 68040 CPU, 1MB CHIP RAM minimum
  216. KICKROM 
  217. to FASTROM AmigaDOS V1.2  or greater, 68040 CPU, 1MB FAST RAM minimum
  218. MAPROM     AmigaDOS V2.04 or greater and an A3640 card or A4000.
  219. TOGGLECPU  AmigaDOS V2.04 or greater, with any PP&S 68040 card *
  220.                 
  221.         * If an A3000 card, the A3000 must be a 25MHZ model, NOT 16MHZ.
  222.                 
  223. OTHER INFO
  224.     This program was written and tested on an Amiga A3000 with a 
  225.     Progressive Peripherals & Software 68040 25MHZ card and with a 
  226.     PP&S Mercury card.  More recent versions are written and
  227.     tested on the Amiga 4000.  It is currently working on, and being 
  228.     regularly tested on a CSA 40/4 Magnum Pro.  If it works on your 
  229.     card please let me know.  If it doesn't, let me know too and maybe 
  230.     we can rectify it for yours and other 68040 cards.  
  231.     
  232.                                   Page 2    
  233.  
  234. USAGE        
  235.     Set040 [FASTROM option option ...]
  236.            [KICKROM [path|DFx: FORCE]]
  237.            [MAPROM path/file FORCE]] 
  238.            [option option ...]
  239.  
  240.         FULLMAP [NO]REVERSE, [NO]DCACHE, [NO]ICACHE, [NO]CACHE [NO]ZCACHE, 
  241.         [NO]RESET, [NO]COPYBACK, [NO]ATCCBACK, [NO]DTT0CBACK, [NO]DTT1CBACK,
  242.         NOCLICK, NOTITLE, TOGGLECPU, NOFASTROM, VERBOSE, HELP
  243.     
  244.     All options can be supplied in either upper or lower case.
  245.     
  246.     Command line examples are given on Page 9.
  247.     
  248.     Some options can only be used with certain settings and are 
  249.     shown below.
  250.     
  251. DEFAULT:
  252.     
  253.     If no options are supplied, Set040 will display its default
  254.     brief information on the current settings.  Copyback modes are
  255.     not shown in this display.  They are shown in full with the
  256.     'VERBOSE' option.
  257.         
  258. OPTION AVAILABILITY
  259.  
  260.     These options are only valid as sub-options to FASTROM or KICKROM
  261.  
  262.     NOCLICK, NOTITLE, [NO]RESET
  263.     
  264.     This option is only valid as a sub-option to KICKROM
  265.  
  266.     FORCE
  267.     
  268.     These options are only valid as sub-options to FASTROM
  269.  
  270.     FULLMAP [NO]REVERSE 
  271.     
  272.     These options are available as sub-options to FASTROM or KICKROM, 
  273.     or separately after a FASTROM or KICKROM installation to modify 
  274.     current settings.
  275.     
  276.     [NO]DCACHE, [NO]ICACHE, [NO]CACHE [NO]ZCACHE, [NO]COPYBACK, 
  277.     [NO]ATCCBACK, [NO]DTT0CBACK, [NO]DTT1CBACK  
  278.  
  279.     These options are only valid separately.
  280.     
  281.     TOGGLECPU, HELP, VERBOSE
  282.     
  283.     This option is only valid after ROM-FASTROM installation.
  284.     
  285.     NOFASTROM
  286.     
  287.     
  288.                                   Page 3    
  289.     
  290.  
  291. DEFINITIONS        
  292.         
  293. FASTROM           - Remaps the current ROM or KICKROM kickstart to FAST 
  294.             RAM.  Without any further options the default 
  295.             configuration of CACHE NOZCACHE COPYBACK will be 
  296.             installed.  If other options are used, they must 
  297.             follow this option.  The setup can be either the
  298.             default mapping for FULLMAP mapping.
  299.             
  300. FULLMAP          - Installs complete mapping for the entire 4 Gig space
  301.             If you are using 68040.library 37.10 or greater, this 
  302.             option is redundant and will just waste memory.  Use a 
  303.             default setup when using these versions of the library.
  304.             See the 'FULLMAP OPTION' heading on Page 6 for more
  305.             information on this option.  
  306.             
  307. NOFASTROM      - Remove the FASTROM setup and free all resources.  
  308.             This option is not valid for KICKROM-FASTROM.            
  309.             
  310. [NO]REVERSE       - Allocate memory for FASTROM from either the top
  311.             (REVERSE) of the memory map or from the bottom    
  312.             (NOREVERSE) of the map.  If this option is not
  313.             specified, it will default to REVERSE.  Always use
  314.             the default first, unless you have trouble surviving
  315.             a reset, and then try the NOREVERSE option.
  316.             
  317. [NO]DCACHE        - Enable or disable the DATA CACHE.
  318. [NO]ICACHE        - Enable or disable the INSTRUCTION CACHE.
  319. [NO]CACHE         - Enable or disable both the INSTRUCTION & DATA CACHES.
  320. [NO]ZCACHE        - Enable or disable caching the ZorroII address area.
  321. [NO]RESET         - Install or remove the reset handler.
  322. [NO]COPYBACK      - Enable or disable Copyback globally (DTT0, DTT1 & ATC).
  323. [NO]ATCCBACK      - Enable or disable Copyback for:
  324.  
  325.             default - $01000000-$03FFFFFF.
  326.             FULLMAP - $01000000-$3FFFFFFF.
  327.  
  328. [NO]DTT0CBACK     - Enable or disable Copyback for: 
  329.     
  330.             default - $08000000-$0FFFFFFF.
  331.             FULLMAP - $40000000-$7FFFFFFF.
  332.             
  333. [NO]DTT1CBACK     - Enable or disable Copyback for:
  334.  
  335.             default - $04000000-$07FFFFFF.
  336.             FULLMAP - $80000000-$FFFFFFFF.
  337.             
  338. NOCLICK           - Stop the floppy drives from clicking.  This is a 
  339.             better way than the various noclick programs that
  340.             are around (including my own), as experience shows
  341.             that changing the flags in the TDU_ structure actually
  342.             slows the response time of the drive seeing a diskchange.
  343. NOTITLE           - Disable changing the Workbench title.
  344. TOGGLECPU         - Toggle the 030 & 040 modes (PP&S 040 CARD ONLY).
  345. HELP or ?         - Displays brief help on various options.
  346. VERBOSE           - Verbose listing of current settings.  This option will
  347.             display the current settings, the type of caching for 
  348.             memory areas, some of the 68040 registers and the 
  349.             kickstart mapping addresses.
  350. FORCE          - This is an option to KICKROM, it forces a new KICKROM
  351.             to be installed, when a KICKROM is already installed.
  352.             This saves the long process that used to be required to 
  353.             do this.  This has been done as an option, so that the
  354.             kickrom line in your startup-sequence will not take
  355.             effect on subsequent resets.
  356.             
  357. MAPROM            Takes a single parameter, of the kickstart file to be
  358.             loaded.  This function requires an A3640 card or A4000.
  359.             If no parameter is specified then a default of 
  360.             'DEVS:kickstart' will be loaded.  If the current version
  361.             of kickstart is the same as the file and error will result
  362.             unless the FORCE option is specified.
  363.             
  364.               NOTE. The MMU *must* be off for this option to 
  365.         work, boot with no startup-sequence before attempting
  366.         it, or place is conditionally before 'setpatch' in
  367.         the startup-sequence.  
  368.         
  369.         EXAMPLE OF STARTUP-SEQUENCE ENTRY
  370.         
  371.         IF EXISTS C:Set040
  372.            Set040 MAPROM DEVS:kickstart
  373.         ENDIF
  374.         SetPatch QUIET
  375.  
  376.  
  377.  
  378.                                   Page 4    
  379.                                   
  380. KICKROM [path|DFx:] - 
  381.  
  382.     Loads and remaps a kickstart to CHIP RAM then reboots into the 
  383.     new kickstart.  This option is always valid, except, when KICKROM 
  384.     is already installed the FORCE option must be specified.  After 
  385.     installation, it may be moved to fast ram by using the FASTROM 
  386.     option.  If you have a board that has hardware fastrom ability, 
  387.     this must be disabled before any attempt to use the KICKROM option.
  388.     The KICKROM option is capable of remapping a kickstart to any 
  389.     address.  This is transparent to the user as the program checks the 
  390.     kickstart and extracts the address it is destined for, and maps it 
  391.     to that address.  You do not need memory at this address, it will 
  392.     be mapped to that address with the MMU.  Set040 has the ability to 
  393.     use the kickstart files that come supplied on the "Kickfile" disk, 
  394.     although if these are used on an A3000 the hard disk will not boot 
  395.     and your fast memory will not be available.  A3000 users should make 
  396.     kickstart files from superkickstart disks, using the 'Update2.x' 
  397.     program.
  398.     This function requires an Amiga with at least 1MB of chip memory 
  399.     for it to work.  It will attempt to allocate about 576k of
  400.     memory within the chip memory area as high as possible.  The
  401.     allocated chip memory from this allocated block to the end of
  402.     the next one megabyte boundary, will be hidden from exec after
  403.     the reboot.  When Set040 is used again, to convert KICKROM to 
  404.     FASTROM, this hidden memory will be added to the free pool.  If 
  405.     your chip memory usage is large, Set040 may not be able to obtain 
  406.     the required memory.  If this happens I suggest closing as many 
  407.     programs as possible or re-booting with a minimum set-up so that 
  408.     Set040 can allocate the memory it requires.  
  409.     Even though we are about to re-boot, into a new kickstart, Set040
  410.     will NOT just take the ram required, as this may cause a crash. 
  411.     If the memory allocated, falls within the first megabyte on an Amiga 
  412.     with two megabytes of chip ram, the second megabyte will be lost 
  413.     completely unless added in with the 'addmem' command.  This should 
  414.     not happen under normal circumstances, as Exec normally allocates 
  415.     memory from lower addresses first.  This means that the memory 
  416.     allocated by Set040 should always fall within the highest one 
  417.     megabyte block.  Although when this KICKROM is converted to FASTROM, 
  418.     all the chip memory will be added back to the free pool, including 
  419.     the top megabyte.
  420.     When installing the kickstart, the screen will turn grey and will
  421.     inform you of the loading, then inform you that the kickstart is 
  422.     being patched to prevent the MMU from being disabled, then inform
  423.     you the system is being rebooted.  During this reboot, there will be 
  424.     a short delay and the power light will flash rapidly to inform you 
  425.     that this function is operating successfully.  See the 'FORCE' 
  426.     option also.
  427. path  =
  428.     If a path/filename or DFx: is not given, then Set040 will attempt
  429.     to load a default kickstart file 'DEVS:kickstart'.
  430.     Full path and filename to a Kickstart file.
  431.     The Kickstart file can be a 256K file (1.2 or 1.3) or a
  432.     512k file (2.0x) as saved by the "Update2.x" or "Update1.3"
  433.     program supplied with your A3000.  
  434.     
  435. DFx:  =
  436.         Instead of a filename, the kickstart can be loaded from an
  437.      A3000 SuperKickstart disk or an A1000 Kickstart disk.  If a 
  438.      SuperKickstart is used a requester window will open and prompt you 
  439.      for the Kickstart version you require.  These choices will be "V1.3" 
  440.      or "V2.0".  If the drive you specified does not have a disk in it, 
  441.      you will be prompted for a disk via a requester.
  442.                                   
  443.                                   Page 5    
  444.     
  445.  
  446. FULLMAP OPTION
  447.  
  448.     This option required more explanation than could be given in the
  449.     definitions above.  The 'FULLMAP' option is valid as a sub-option 
  450.     to the FASTROM option, for a ROM remap or a KICKROM remap.
  451.     
  452.     If you are using 68040.library 37.10 or greater, this option is 
  453.     redundant and a default setup should be used.  If this option is used 
  454.     on these version of the library, it will only waste memory, as the 
  455.     68040.library replaces Set040's MMU setup and does the entire mapping 
  456.     itself.
  457.  
  458.     The default mapping is limited and was a compromise as explained 
  459.     in the Technical notes on page 12.  The FULLMAP option allows for 
  460.     a full mapping of the entire 4 Gigabyte address space of the 68040 
  461.     processor.  I suggest you read the Technical notes so you may 
  462.     understand the compromises that had to be made for a default setup.
  463.     
  464.     The FULLMAP option has addressed the mapping in an entirely
  465.     different way to the default setup.  This full setup will require
  466.     just over one megabyte of fast memory in order to install the
  467.     FASTROM.  This megabyte includes the room required for the
  468.     Kickstart image, and will be allocated from the highest address
  469.     possible, (unless the NOREVERSE option is given) with the highest 
  470.     priority memory in the map.  This memory however must be 'LOCAL' 
  471.     memory.  If not enough LOCAL memory is available, the attempt will 
  472.     fail.
  473.     
  474.     One quarter of the memory map is controlled by the ATC, and these 
  475.     addresses are $0 to $3FFFFFFF.  These addresses include those locations 
  476.     known as 24 Bit address space, Commodore Reserved areas, A3000 Mother 
  477.     board Fast ram, CoProcessor Slot Expansion, and a portion of the 
  478.     ZorroIII Expansion area.  This means that the ATC is now contolling
  479.     all areas that the default setup allowed altogether, plus a portion of 
  480.     the map that was invalid in the default setup.
  481.     
  482.     The rest of the ZorroIII Expansion area, from address $40000000 to
  483.     $7FFFFFFF is controlled by the DTT0/ITT0 registers.  The rest of the 
  484.     address space from addresses $80000000 to $FFFFFFFF are controlled by
  485.     the DTT1/ITT1 registers and this area is known as 'Reserved by 
  486.     Commodore'.
  487.     
  488.     All areas above the 24 Bit address space will default to
  489.     cachable copyback unless other options are specified.  Remember
  490.     that the options to control ATC, DTT0 and DTT1 copyback are
  491.     still valid with this option, but they will be controlling 
  492.     different areas of the map as explained above.  Normally these
  493.     options will not be required, because the default settings on boot-up
  494.     will be the same as Kickstart normally uses for the 68040.  If these
  495.     options are given after the installation, the 'VERBOSE' option
  496.     will show the changes that will take affect on a certain area
  497.     of the map.  After a reset, all modes will be restored to standard,
  498.     so these will require changing again, if you do not use default 
  499.     values.
  500.     
  501.     The FULLMAP option allows the Kickstart image to be protected from 
  502.     writes, in the physical location as well as the logical location 
  503.     as in the default mode, but due to technical difficulties the physical
  504.     area is only writeprotected, after each reset, when the FASTROM command
  505.     is given.  Even though FASTROM is already installed, when it is
  506.     launched again in the startup, Set040 will recognise that the FASTROM
  507.     is still installed and will make certain tests.  One of these tests
  508.     includes setting the physical location as writeprotected.  The
  509.     VERBOSE option of Set040 shows the logical and physical area settings
  510.     for you to check.  See below (Page 7) for more on this subject.
  511.     
  512. * * * IMPORTANT * * *
  513.     
  514.     You MUST read the document file for the SetPatchPatch program supplied.
  515.     
  516.                               Page 6
  517.     
  518.  
  519. KICKSTART WRITE-PROTECTION
  520.     
  521.     The logical address of kickstart will always be marked as write-
  522.     protected and the error handler will trap any write accesses.  The
  523.     logical addresses will be marked as write-protected on a FASTROM
  524.     FULLMAP    installation.  The default mapping mode does not support
  525.     write-protection of the physical area.  During a reset, this write-
  526.     protection must be removed, otherwise an exception would occur during 
  527.     the Kickstart memory test and SCRAM test routines.  The removal of 
  528.     the write-protection is transparent to the user, and is handled by 
  529.     the reset handler. The write-protection can be re-installed by Set040 
  530.     if the FASTROM option is given.  This would normally happen in the 
  531.     startup-sequence (See Page 10).  When this option is given, Set040 
  532.     will recognise that a FASTROM is already installed and will check to 
  533.     see if it is write-protected at its physical location.  If not, the 
  534.     MMU setup will be modified to reflect the write-protected state.  If 
  535.     your startup-sequence entries are similar to the example on Page 10, 
  536.     this process will be automatic and transparent to the user.
  537.     
  538. KICKSTART 1.2 - 1.3
  539.  
  540.           ************************************************************
  541.     ** USE 1.3 or 1.2 WITH CAUTION, THEY ARE NOT FULLY COMPATIBLE **
  542.       ************************************************************
  543.  
  544.     Kickstart 1.2 and 1.3 should not be used on the 68040 without
  545.     extreme caution.  These kickstart were not designed for the
  546.     special cache modes of the 68040.  The ability to install them
  547.     in Set040 has been supplied for testing purposes, incase a 
  548.     programmer does not have a 1.3 Kickstart Amiga to test on.
  549.     
  550.     Watch out for 1.3 'SetClock' commands, they will guru the
  551.     A3000/68040 every time.  Make sure you delete them or replace
  552.     them with your A3000 'SetClock' command.
  553.     
  554.     If the new Kickstart is 1.2 or 1.3,  only the remaining chip 
  555.     memory will be available after booting.  Any FAST RAM on the 
  556.     A3000 mother board will not be available.  This memory must be 
  557.     added to the system with the "addmem" command.  It has been done 
  558.     this way incase the fast memory is not required for some reason.  
  559.     The usage for the 'addmem' command for different memory sizes is 
  560.     shown below.  
  561.         
  562.     When the FAST ram has been added, you may run Set040 again with 
  563.     optional arguments (See KICKROM to FASTROM).  
  564.     
  565.     AddMem usage for A3000 32bit wide fast ram are as follows:
  566.  
  567.     A3000 4MB  32 bit ram = AddMem 7C00000 7FFFFFF
  568.     A3000 8MB  32 bit ram = AddMem 7800000 7FFFFFF
  569.     A3000 12MB 32 bit ram = AddMem 7400000 7FFFFFF
  570.     A3000 16MB 32 bit ram = AddMem 7000000 7FFFFFF
  571.     
  572.                                   Page 7    
  573.     
  574. KICKSTART 2.0x
  575.     If the new Kickstart is 2.0x (V37+) your FASTRAM will still be 
  576.     available and your hard disk would have booted.  The addmem 
  577.     command will not be required.  This set-up will still be in 
  578.     CHIP ram though, and can be moved to fast memory by running Set040 
  579.     with the FASTROM and other options.  
  580.               
  581.    NOTE:    
  582.     FOR COMPATIBILITY REASONS, WHEN THE KICKROM to FASTRAM CONVERSION
  583.     IS PERFORMED, THE DATA CACHE WILL ONLY BE ENABLED FOR V2.0X
  584.     KICKSTARTS, AND WILL BE DISABLED FOR OTHER KICKSTARTS.  IF YOU
  585.     WISH TO CHANGE THIS, OR MANIPULATE THE OTHER CACHES, USE THE
  586.     CACHE OPTIONS.
  587.         
  588.     ONCE THIS KICKROM KICKSTART IS INSTALLED IT CANNOT BE REMOVED WITH 
  589.     THE NOFASTROM OPTION. ANY ATTEMPT TO DO SO WILL GIVE AN ERROR.  
  590.     SEE 'NORESET' OR 'FORCE' OPTIONS, OR SEE 'RESET REMOVAL' BELOW.
  591.  
  592. KICKROM to FASTROM
  593.  
  594.     When a KICKROM set up is first installed, the kickstart
  595.     will be in chip memory.  In this mode you have three options.
  596.     Firstly, may leave it as it is, and it will be lost on the next
  597.     reboot.  Secondly you may install the reset handler, and the
  598.     kickstart will remain in CHIP memory and survive a reboot, or
  599.     thirdly you may use the FASTROM option(s) to move it to FAST
  600.     memory with a default, or FULLMAP setting, and optionally survive 
  601.     a reboot.
  602.     
  603. RESET SURVIVAL
  604.  
  605.     The KICKROM function, by default will not survive a hardware
  606.     (keyboard) reset.  This can however be installed by using the
  607.     RESET option.
  608.     
  609.     Separate installation allows you to install it should you forget, 
  610.     when doing a KICKROM to FASTROM conversion, or allows you make 
  611.     a CHIP ram KICKROM setup survive a reboot, without ever converting 
  612.     to FAST ram.  This is useful in situations where enough FAST ram is 
  613.     not available or the FAST memory does not come on-line early enough 
  614.     in the reset-boot sequence.  If you find that the KICKROM-FASTROM 
  615.     does not survive a reboot or crashes, then try a CHIP ram KICKROM 
  616.     setup. 
  617.     
  618.     Once installed the current KICKROM kickstart will survive every 
  619.     reboot until removed with the NORESET option, or changed with the
  620.     FORCE option.
  621.         
  622.     PLEASE NOTE THAT THIS HANDLER USES THE COLDCAPTURE VECTOR, AND THE
  623.     COOLCAPTURE VECTOR DURING THE RESET PROCESS.  SOME ANTI-VIRUS 
  624.     PROGRAMS (INCLUDING MY OWN NoVirus, PRIOR TO BRAINFILE 066) MAY SEE 
  625.     SOME POSSIBLE NEW VIRUS  IN MEMORY,  BUT DO NOT WORRY, IT IS ONLY 
  626.     THIS RESET HANDLER.  THESE VECTORS WERE CHOSEN SO THAT RAD: TYPE
  627.     DEVICES MAY ALSO SURVIVE A REBOOT AND NOT CONFLICT WITH Set040.
  628.     
  629.     THE ACCESS FAULT EXCEPTION VECTOR IS ALSO MODIFIED, TO PREVENT
  630.     ATTEMPTED WRITES TO THE KICKSTART FROM CAUSING A SOFTWARE FAILURE.
  631.     THE FASTROM KICKSTART IS WRITEPROTECTED WITHIN THE MMU TABLES. 
  632.     
  633.     For other anti-virus authors, it is easy to identify this handler
  634.     by fetching the pointer stored in coldcapture, subtracting four from
  635.     this address pointer and testing for the following value at that
  636.     memory location:
  637.     Hex value=$52535448 = RSTH in ascii
  638.     
  639.                                   Page 8    
  640.     
  641. PROGRAM EXAMPLES
  642.     
  643. *************************************************************************
  644.  ***********************************************************************
  645. NOTE    IN ALL THE FOLLOWING EXAMPLES, IF YOU ARE USING 68040.LIBRARY 
  646.     37.10 OR GREATER, THEN THE SETPATCH COMMAND MUST COME AFTER THE 
  647.     SET040 ENTRIES, AND THE SETPATCHPATCH COMMAND MUST BE DELETED AND 
  648.     NOT USED AT ALL.
  649.      CHECK THE VERSION OF 68040.LIBRARY YOU ARE USING AND MAKE SURE
  650.      YOU INSTALL CORRECTLY, OR IT WILL NOT WORK.
  651.  
  652. EXAMPLE OF INSTALLING A FASTROM (68040.library 37.10 or greater)
  653.  
  654.     To remap the rom, to fast ram with noclick drives:
  655.  
  656.     Set040 fastrom noclick
  657.     setpatch QUIET        <----Commodore's setpatch must come after
  658.                                 <----Delete the setpatchpatch entry
  659.  ***********************************************************************
  660. *************************************************************************     
  661.     
  662. EXAMPLE OF INSTALLING A FASTROM (Kickstarts up to and including V2.04)
  663.  
  664.     To remap the rom, to fast ram with noclick drives:
  665.  
  666.     Set040 fastrom noclick
  667.     SetPatchPatch            <-- the standard 'SetPatch' must already
  668.                          be installed.
  669.  
  670. EXAMPLE OF INSTALLING A KICKROM
  671.  
  672.     To install a KICKROM setup from a default file "DEVS:kickstart".
  673.                 
  674.         Set040 kickrom 
  675.  
  676.     To install a KICKROM as above, when KICKROM already installed.
  677.                 
  678.         Set040 kickrom force
  679.               
  680.     To install a KICKROM as above, when KICKROM already installed.
  681.                 
  682.         Set040 kickrom devs:kick force
  683.               
  684.     To install a kickrom option from a kickstart disk in df1:
  685.               
  686.         Set040 kickrom df1:
  687.         
  688. EXAMPLE OF CONVERTING KICKROM TO FASTROM
  689.  
  690.     To convert the KICKROM to FASTROM, with reset handler, and
  691.        noclick drives.
  692.          
  693.            Set040 fastrom reset noclick            
  694.         SetPatchPatch
  695.        
  696. EXAMPLE OF CONVERTING KICKROM TO FASTROM WITH THE FULLMAP OPTION
  697.  
  698.     To convert the KICKROM to FASTROM, with reset handler, and
  699.        noclick drives and install a FULLMAP type remap. This option
  700.        will require 1067570 bytes of LOCAL memory.
  701.          
  702.            Set040 fastrom fullmap reset noclick            
  703.         SetPatchPatch
  704.        
  705. EXAMPLE OF INSTALLING RESET HANDLER SEPERATELY
  706.      
  707.     The reset survival trap handler can be installed without
  708.        performing the KICKROM to FASTROM conversion by using RESET option.
  709.        If this option is given, the kickstart will remain in CHIP memory 
  710.        and be able to survive a reboot.
  711.        
  712.              Set040 reset
  713.              
  714.     NOTE, This option cannot be done after installation if you
  715.           are using kickstart 3.0, 68040.library 37.10 or greater.
  716.           The reset option must be given when installing Set040.             
  717.     
  718.                                   Page 9    
  719.      
  720. EXAMPLE OF KICKROMMING IN THE STARTUP-SEQUENCE
  721.  
  722.     If you want to use a different kickstart in the startup-
  723.     sequence and have this survive a reset and be in fast memory,
  724.     all that is required is three lines.
  725.     
  726.      The first line will only load the kickstart once, After this is
  727.      done the next boot will cause the first line to fail, as the output 
  728.      goes to nil: it is transparent to the user. The second line will 
  729.      then map it to fast ram and install the reset handler and no-click 
  730.      patch once.  After this both lines will transparently fail each boot.  
  731.      This saves you having to use IF/WARN/ENDIF statements.  
  732.      
  733.      For KICKROM-FASTROM survival you could use:-
  734.      
  735.     SetPatch quiet                <--- Normal Setpatch command
  736.      Set040 >nil: kickrom kickstartfile  
  737.      Set040 >nil: fastrom fullmap reset noclick
  738.     SetPatchPatch >nil:            
  739.                                          
  740.      For CHIP ram KICKROM survival you could use:-
  741.         
  742.     SetPatch quiet                <--- Normal Setpatch command
  743.     Set040 >nil: kickrom kickstartfile  
  744.      Set040 >nil: reset                  
  745.     SetPatchPatch >nil:            <--- MUST be after Setpatch and
  746.                                           AFTER Set040        
  747.                                           
  748.                                           
  749. EXAMPLE OF RESET REMOVAL
  750.  
  751.     Set040 noreset
  752.  
  753.     Removes the reset handler so that the next boot will
  754.     return to your ROM based kickstart.
  755.  
  756.               
  757. EXAMPLE OF CACHE MANIPULTION                  
  758.  
  759.     Disable both caches                      - Set040 nocache
  760.     Enable  both caches                      - Set040 cache
  761.     Disable Data Cache                       - Set040 nodcache
  762.     Enable  Data Cache                       - Set040 dcache
  763.     Enable  Both Caches and disable Copyback - Set040 cache nocopyback                           
  764.     Enable  Both Caches and enable  Copyback - Set040 cache copyback
  765.     Disable Both Caches and disable Copyback - Set040 nocache nocopyback
  766.             
  767.  
  768. EXAMPLE OF REMOVING FASTROM
  769.                
  770.     SET040 nofastrom
  771.    
  772.     NOTE:    This function is not possible on a KICKROM or KICKROM-FASTROM
  773.             setup.
  774.                 
  775.                                   Page 10    
  776.               
  777. EXAMPLE OF SWITCHING FROM 68030-68040 OR VICE-VERSA
  778.                 
  779.     Set040 togglecpu 
  780.          
  781.     One of the following cards must be installed.
  782.              
  783.     PP&S A3000-68040 card.
  784.           PP&S A3000 Mercury card.
  785.       *    PP&S A2000-68040 card.
  786.       *    PP&S A2000 Zeus card.
  787.     
  788.       *    TO DATE, THIS FUNCTION HAS ONLY BE TESTED ON THE FIRST TWO ENTRIES.
  789.                                
  790.     THIS SWITCH IS NOT PERMITTED ON 16MHZ A3000'S, AND SHOULD NOT
  791.     BE ATTEMPTED.  
  792.     
  793.     TOGGLECPU is the only option that is permitted on a 68030 CPU.  All 
  794.     other options  will display an error.  When this option is given,
  795.     a requester will open and will prompt you to either 'CHANGE' or 
  796.     'ABORT' via two gadgets.  If aborted, no further action takes 
  797.     place and the program will exit.  If 'CHANGE' is selected, another 
  798.     requester will open and prompt you to reboot the computer.  This 
  799.     requester will have a single 'ABORT' gadget, giving you a final 
  800.     chance to abort.  The actual reboot must be done by hand, using 
  801.     the keyboard, because the PP&S 68040 card requires a hardware reset 
  802.     to switch modes.  This cannot be generated with software.  (NO, 
  803.     the reset instruction will not work!) :-( 
  804.     
  805. IMPROVEMENTS
  806.     All suggestions will be carefully considered.
  807.     All bugs will be rectified A.S.A.P.
  808.     I will attempt to overcome all incompatibilities 
  809.     if sufficient information on your particular board
  810.     is supplied ie. amount of onboard ram, address of such
  811.     ram, A3000 or A2000 board, full description of other
  812.     hardware you use, full description of any plug in cards,
  813.     full description of your Amiga, OS version numbers, etc!!
  814.     
  815.                                   Page 11    
  816.               
  817. TECHNICAL NOTES 
  818.  
  819.     The average user may not completely understand the following
  820.     notes, suffice to say an understanding of how this program
  821.     works is not required.  Information given here is mainly
  822.     for the benefit of the experienced user or interested programmer.
  823.     These notes may be of some help if you experience problems
  824.     with certain 68040 cards.
  825.     
  826.     NOTE: The termination for certain address has been taken from
  827.           the latest information I have available on the memory map
  828.           for the A3000 series of computers and is dated July 1991.
  829.  
  830.     I wrote this program for a few reasons.  To gain knowledge 
  831.     in programming the 68040 processor in assembler and to discover 
  832.     the differences from its older brothers.  I wanted to test Macro68 
  833.     assembler in 68040 instructions.  When I ran a test of the difference 
  834.     in speed between reading the ROMS and reading FAST RAM, I realized a 
  835.     68040 MMU program was a necessity.  I found that while reading the 
  836.     ROMS the 68040 was only marginally faster than the 68030, yet in 
  837.     FAST RAM the 68040 leaves the 68030 standing.
  838.  
  839.     The MMU set-up remaps the kickstart ROMS to FAST RAM, and allows 
  840.     for instruction caching of the address areas the same as for the 
  841.     data areas mentioned below.  This set-up protects the new kickstart 
  842.     by marking this area of memory as write-protected in the ATC table 
  843.     entries.  This remap is faster than the hardware FASTROM that
  844.     is being done on some 68040 cards.  Testing has shown that a MMU
  845.     remap is between two and three times the speed of a hardware map.
  846.  
  847.     Re-mapping kickstart to FAST RAM poses a few problems because of 
  848.     the design of the 68040 MMU.  Most of the first 16MB of the Amiga 
  849.     memory map must be set for non-cachable serialized.  The rest of 
  850.     the 4 gigabyte space can be set for cachable copyback,  but because 
  851.     of limitations of the 68040 MMU, programming this is not easy.  The 
  852.     standard V2.04 or PP&S set-up manages this by using both of the Data 
  853.     Transparent Translation registers.  This works fine but does not 
  854.     allow for re-mapping of the kickstart.  The 68040 MMU looks at 
  855.     Transparent Translation registers first, and if an address matches, 
  856.     the ATC tables are not accessed.   Therefore a remap of the kickstart 
  857.     would not be seen if we used the same values in the transparent 
  858.     registers as PP&S, or Commodore uses. 
  859.     
  860.     The 68040 has a simple 3 level ATC table and page sizes of either
  861.     4k or 8k.  Our set-up discussed here uses the 8k page size.
  862.     If the ATC is used, each entry in the first table covers 32MB.  
  863.     This means that we must at least have entries in this table 
  864.     for that address space.  If we want this entire 32MB to be valid
  865.     we must have complete entries in the second and third tables to 
  866.     cater for it.  This is not a large problem but does use around 
  867.     17k of memory for each 32MB space covered in the table.  The 
  868.     problem is enhanced due to the fact the 68040 does not support 
  869.     'early termination descriptors' as the 68030 did. 
  870.  
  871.     The next problem exists because, two of each data and instruction
  872.     transparent translation registers are not enough to control the 
  873.     rest of the space.  We could put all entries in the ATC tables, 
  874.     but this would mean very large tables and make it difficult to 
  875.     control the copyback mode over a large area.  A mode similar to
  876.     this has been catered for by Set040 as an option and still allows.
  877.     for compatibility with the CPU040 program from PP&S, CPU from 
  878.     Commodore and any other 68040 cache manipulation program that uses
  879.     the OS routines for manipulation of the caches and modes.
  880.                                   
  881.                                   Page 12    
  882.                                   
  883.     Set040 allows for two different setups.  These allow for either a 
  884.     smaller memory efficient setup, or a full setup that requires just 
  885.     over one megabyte of memory.     
  886.     
  887. THE DEFAULT SETUP
  888.     
  889.     The first 16MB is set in the tables as non-cachable serialized.  
  890.     Copyback mode for the second, third and fourth 16MB spaces can be 
  891.     conrolled globally between copyback or writethrough before or after 
  892.     installation, by command line options.  The addresses of this  48MB 
  893.     space is $1000000 - $3FFFFFF.
  894.               
  895.     The next 64MB address space ($4000000 - $7FFFFFF) is controlled
  896.     by one each of the two data and instruction transparent translation 
  897.     registers for the data and instruction spaces respectively.  The 
  898.     data register is set for cachable copyback unless the NODTT1CBACK 
  899.     option is used at installation.  This can be changed after 
  900.     installation with the various copyback options.  The instruction 
  901.     registers are set for cachable.
  902.  
  903.     The above caters for the first 16MB and the area defined as 
  904.     'A3000 mother board space'.  Above this area we have a 128MB 
  905.     space which is defined as "CoProcessor Slot Expansion".  This is 
  906.     controlled by the second data and instruction transparent translation 
  907.     registers and can be optionally switched between copyback or 
  908.     writethrough before or after installation by command line options.  
  909.     This area will default to copyback at installation unless NODTT0CBACK 
  910.     option is given.
  911.  
  912.     All the ATC entries except for the kickstart remap entries actually 
  913.     get transparently translated.  The 68040 users guide states that if 
  914.     the physical address equals the logical address in a page entry, then
  915.     that entry is transparently translated.  Transparent translation means
  916.     that there is no CPU overhead to do the translation.  The kickstart 
  917.     remap routine makes use of the new 'MOVE16' instruction to copy the ROM 
  918.     image into ram.  This allows for a very fast copy and saves having to 
  919.     call OS routines to flush the caches after the copy, as the Move16 
  920.     instruction does not permit caching of the data copied and invalidates
  921.     any entries in the cache for the destination addresses.  
  922.  
  923.     The rest of the map which ranges from $10000000-$FFFFFFFF has been 
  924.     set as invalid, simply to conserve memory.  The default set-up should
  925.     allow for the good compatibility between different 68040 cards with 
  926.     the least use of memory.  
  927.     
  928.                                   Page 13    
  929.               
  930. THE FULLMAP SETUP
  931.  
  932.     This mode allows for mapping of the entire 4 gigabyte space with
  933.     memory usage of a little over a megabyte, including the Kickstart
  934.     image.
  935.     
  936.     The first one gigabyte of address space is controlled by the ATC.
  937.     The second gigabyte is controlled by the DTT0 and ITT0 transparent
  938.     translation registers, and the third and fourth gigabytes are 
  939.     controlled by the DTT1 and ITT1 registers.  Caches for the first
  940.     16MB of the address space is set the same as the default setup.
  941.     
  942.     All of the remaining address space is set for cachable copyback,
  943.     but this can be somewhat controlled by various command line options.
  944.     For further information see the FULLMAP description on page 6.
  945.  
  946.     When programming these setups, I attempted to keep them fully 
  947.     compatible with the standard programs from Commodore and PP&S.
  948.     This was done in the way of a stand alone program called SetPatchPatch.
  949.     This 'patch' allows the CPU, CPUSet, CPU040 and other correctly
  950.     written programs to be fully aware of the MMU setup that Set040 has
  951.     installed.  In cases where the program that was supplied with your 
  952.     card is not written correctly, I suggest you either use Set040 or one
  953.     of the above programs for cache manipulation.  Yours can be tested
  954.     by using one of the above, and taking note of the effect it has
  955.     when the 'Set040 verbose' command is issued.  Your program should
  956.     have EXACTLY the same effect as one of the above or Set040 does, 
  957.     otherwise it is not correctly written.
  958.  
  959. TRADEMARKS 
  960.                
  961.  AmigaDOS, Amiga and Kickstart are trademarks of Commodore Amiga Inc.
  962.  PP&S is an abbreviation for Progressive Peripherals and Software.
  963.  MC68030, MC68040 and Motorola are trademarks of Motorola Inc.               
  964.  
  965. REFERENCES
  966.                 
  967.  M68000PM/AD  Programmers Reference Manual (inc. CPU32)
  968.  Published by Motorola Literature Distribution USA.
  969.  M68000UM/AD  8-/16-/32-Bit MicroProcessor User's Manual Eighth Edition.
  970.  Published by PRENTICE HALL, Englewood Cliffs, N.J. 07632
  971.  MC68040UM/AD 32-Bit MicroProcessor User's Manual
  972.  Published by Motorola Literature Distribution USA.
  973.  MC68030UM/AD 32-Bit MicroProcessor User's Manual
  974.  Published by Motorola Literature Distribution USA.
  975.  MC68040 Errata notes supplied by William J Coldwell.
  976.  
  977.                                    Page 14    
  978.               
  979.